| Java (Programmiersprache) | Dieser Text beschreibt Java (Programmiersprache). Der untere Text beinhaltet die Java (Programmiersprache) Beschreibung. Soweit es sich um ein definierbares Objekt handelt, sollte hier eine Java (Programmiersprache) Definition vorhanden sein. Sollte eine Definition von Java (Programmiersprache) fehlen, kann diese von Ihnen verfaßt werden. Wir sind bestrebt die Beschreibung von Java (Programmiersprache) möglichst ausführlich zu halten.
Jeder Text bei Know-Library, sowie ein Teil davon (Definition, Beschreibung etc.), außer Bücher Beschreibungen kann bearbeitet werden. Falls die Beschreibung auf dieser Seite nicht korrekt ist klicken Sie auf 'Beschreibung editieren' um den Text zu korrigieren bzw. neuen einzufügen. Weitere Informationen und Bücher zum Thema Java (Programmiersprache) Beschreibung , so wie Link zum Forum finden Sie weiter unten. Eine Übersicht der Texte, die das Thema Java (Programmiersprache) beschreiben finden Sie auf der Seite alle Artikel über Java (Programmiersprache). Fragen zu dem Thema Java (Programmiersprache) können im Forum gestellt werden. Klicken Sie hier um zu dem Forum zu wechseln.
Java (Programmiersprache) ArtikelBild nicht gefunden Java-Logo
Bild nicht gefunden DukeWave (Maskot)
Java ist eine objektorientierte, plattformunabhängige Programmiersprache. Java-Programme laufen üblicherweise auf einer Java Virtual Machine, das heißt einer virtuellen Maschine, die die konkreten Details von Hardware und Betriebssystem für das Programm verbirgt.
Buch-Tipp: Englische Grammatik. Regeln und Übungen für die Klassen 5 - 13. 100 Prozent alltagstauglich und effiktiver Gebrauchswert Ellen Henrichs Grammatik ist die Beste, die ich in meienr Lehrtätigkeit bisher in die Finger bekommen habe. Sehr klar struktutriert, sehr kleinschrittig erklärt, eine sehr übersichtliche Navigation am Rand jeder Seite. Meine Schüler arbeiten sehr gerne damit. Noch besser allerdings war die "Vollversion"... | |
Die Urversion von Java, auch Oak genannt, wurde in einem Zeitraum von 18 Monaten vom Frühjahr 1991 bis Sommer 1992 unter dem Projektnamen "The Green Project " von Patrick Naughton, Mike Sheridan und James Gosling sowie zehn weiteren Entwicklern in dem Auftrage des amerikanischen Computerherstellers Sun Microsystems entwickelt. Einer der Urväter und Hauptentwickler der Sprache war dabei James Gosling.
Das ursprüngliche Absicht bei der Entwicklung von Java war aber nicht lediglich die Entwicklung einer weiteren Programmiersprache, sondern die Entwicklung einer vollständigen Betriebssystemumgebung, inklusive virtueller CPU, für unterschiedlichste Einsatzzwecke.
Die Entwicklung fand in einem anonymen Bürogebäude in der Sand Hill Road in Menlo Park statt. Während dieser abgeschiedenen Entwicklungsphase kam es zu keinem Austausch mit Sun Microsystems. In dem Sommer 1992 schließlich war die erste Oak-basierte Anwendung fertiggestellt – "an interactive, handheld home-entertainment device controller with an animated touchscreen user interface".
Diese Technologiedemonstration einer Touchscreen-basierten Gerätesteuerung mit animierter Benutzeroberfläche (GUI) hatte den Namen *7 ("StarSeven"). Der Name Oak hat den Ursprung übrigens in einer Eiche, die vor dem Fenster des Entwicklers James Gosling stand (Oak, engl. für Eiche).
Nach der Vorführung von StarSeven, mit dem zahlreiche Geräte interaktiv gesteuert werden konnten, wurden Unternehmen aus der Kabelfernseh-Branche aufmerksam und aus dem Hinterzimmer-Projekt "The Green Project" entstand die Firma "FirstPerson".
Aus dem Büro wurde ein Bürohaus in der 100 Hamilton Avenue in Palo Alto.
Da die Belegschaft inzwischen von 13 Entwicklern auf 70 Mitarbeiter wuchs und die Zeit für interaktive digitale Mehrwertdienste in dem Bereich des Kabelfernsehens noch nicht reif war, suchte sich die junge Firma neue Betätigungsfelder.
Nach einem dreitägigen Gruppentreffen von John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing und Eric Schmidt in "The Inn at Squaw Creek" bei Lake Tahoe war schnell klar: das Internet war das neue Betätigungsfeld.
Auf Basis des Urvaters aller grafischen Webbrowser, Mosaic, wurde ein um Java erweiterter Browser geschaffen – der "WebRunner" (nachdem Film "The Blade Runner"). Später wurde aus "WebRunner" dann der offiziell bekannte HotJava-Browser.
Im März 1995 wurde die erste Alphaversion (1.0a2) des Java-Quellcodes für die Öffentlichkeit freigegeben und die Downloadzahlen explodierten.
Wenig später, am 23.05 1995, wurde Java dann erstmals offiziell der Öffentlichkeit vorgestellt, in der "San Jose Mercury News".
Der Durchbruch für Java kam mit der Integration von Java in den Browser Netscape – besiegelt durch einen Handschlag zwischen Eric Schmidt und George Paolini von Sun Microsystems und Marc Andreessen, dem Erfinder und Begründer von Netscape. Ort und Zeit: 4 Uhr morgens in einem Hotelzimmer des Sheraton Palace Hotels in der Nähe des Convention Centers.
Der Name Java hat seinen Ursprung übrigens in dem Namen einer starken Kaffee-Sorte, die speziell für Espresso Verwendung findet (Java-Bohne) und von den Entwicklern bevorzugt getrunken wurde.
|
| |
Die 1996 erschienene Java-Version 1.0 enthielt noch eine überschaubare Menge von Standardpaketen, die in späteren Versionen schnell anwuchs:
-
java.lang: elementare Klassen, z. B. Object und System
-
java.io: Ein- und Ausgabe
-
java.util: z. B. Datenstrukturen und eine Datumsklasse
-
java.net: einfache TCP/IP-Klassen
-
java.awt: grundlegene Klassen für grafische Benutzeroberflächen
-
java.applet: eine Klasse für die bekannten Applets.
Eine Spracherweiterung wurde 1997 mit Java 1.1 vorgenommen, die Syntax wurde um das Konzept der inneren Klassen erweitert. Dies ging auch einher mit einem Umbau der Ereignisbehandlung hin zu einem Callback-System mit sogenannten Listenern.
Außerdem wurde die Standardbibliothek erweitert:
- Klassen für die Internationalisierung (so genannte "Ressourcenbündel")
- Java-Komponenten, die Java-Beans
- das Dateiformat JAR für die Paketierung ganzer Bibliotheken oder Anwendungen als Java-Archive
- Klassen für numerisches Rechnen (
BigInteger und BigDecimal)
- ein Protokoll für verteilte Programme, die Remote Method Invocation (RMI)
- Objektserialisierung für die persistente (d.h. dauerhafte) Speicherung von Objekten, z. B. in Dateien
- JDBC für den Zugriff auf relationale Datenbanken
- Sicherheitsfunktionen, z. B. zu dem Signieren von JAR-Dateien und Applets
Java 2 (JDK 1.2) erschien in dem Jahr 1998. Mit Erscheinen dieser Version sprach von Sun von Java 2, dementsprechend heißen die Pakete Java 2 Platform, Standard Edition (J2SE) und statt Java Development Kit (JDK) heißt es Java 2 Software Development Kit (J2SDK).
In dieser Version wurden Just-In-Time-Compiler eingeführt, womit die Ausführung von Java-Programmen deutlich beschleunigt werden konnte.
Erneut wurde die Standardbibliothek erweitert:
- neue Schnittstellen und Implementierungen für Collections, also Datenstrukturen wie Listen, Mengen und Maps
- die Oberflächen-Bibliothek Swing
- neue Grafik-Funktionen (die Java 2D-API)
- Drag and Drop-Funktionalität
- verbesserte Audio-Funktionen
- eine CORBA-Schnittstelle
- weiche Referenzen
Im Jahr 1998 wurde auch der Java Community Process (JCP) eingeführt. Diese Organisation steuert seitdem Änderungen an der Spezifikation von Java. Für vorgeschlagene Änderungen wird ein Java Specification Request (JSR) erstellt, der verschiedene Phasen durchläuft, bevor die Änderungen in Java Einzug halten. (Homepage des Java Community Process (http://www.jcp.org))
2 Tausend erschien J2SE 1.3 als nächster Evolutionsschritt, die API wurde erneut erweitert.
Erst 2002 wurde mit Erscheinen von J2SE 1.4 wieder die Sprache selbst erweitert, was zuletzt bei Version 1.1. geschah. In dieser Version wurde eine Unterstützung für Assertions hinzugefügt. Natürlich wurde auch wieder die API erweitert. Zusätzlich wurde eine Engine mit Hotspot-Optimierung eingeführt. Das bedeutet, dass nicht mehr der gesamte Bytecode sofort kompiliert wird, sondern ca. häufig benutzte Stellen (Hotspots). Codesegmente die sehr häufig ausgeführt werden, werden sogar weiter optimiert, so dass die häufig benutzten Stellen stets schneller ausgeführt werden.
Siehe auch: Servlet, Java Web Start, Java Server Pages, J2EE, J2ME, JavaDoc, Blackdown
|
Die nächsten Versionen der Sprache Java | |
Java 5.0 ist am 30. September 2004 als Nachfolger der Version 1.4 erschienen – ursprünglich sollte die Version 1.5.0 lauten. In dieser Version gibt es große Änderungen an der Sprache selbst und weitere API-Erweiterungen (Liste der Änderungen (http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html)):
Das für Java 1.5 (jetzt 5.0) geplante JSR 203 (http://www.jcp.org/en/jsr/detail?id=203) wurde auf Java 1.6 verschoben.
Außerdem kann davon ausgegangen werden, dass sich Java in dem Laufe der Zeit zu einer aspektorientierten Programmiersprache wandeln wird.
|
| |
Die Sprache Java ist objektorientiert aufgebaut. Die Grundidee der objektorientierten Programmierung ist die softwaretechnische Abbildung in einer Art und Weise, wie wir Menschen auch Dinge der realen Welt erfahren.
Das Ziel dahinter ist, große Softwareprojekte einfacher managen zu können, und sowohl die Qualität von Software zu erhöhen als auch Fehler zu minimieren. Ein weitereAbsicht der Objektorientierung ist ein hoher Grad der Wiederverwendung von Softwaremodulen.
Obwohl Java vollständige Objektorientierung unterstützt, gibt es einige wenige Grunddatentypen (int, boolean usw.), die keine Objekte sind (siehe auch Kapitel weiter unten), in der Praxis jedoch immer Verwendung finden.
|
| |
Die Sprache Java ermöglicht auch Attributorientierte Programmierung. Grundlage dafür sind Hinweise in dem Quelltext, die nicht vom Compiler, sondern speziellen Verarbeitungswerkzeugen ausgewertet werden. Bislang wurden in Java dafür ausschließlich Javadoc-Kommentare mit speziellen JavaDoc-Tags benutzt, die von Doclets wie z. B. dem XDoclet ausgewertet wurden. Seit Java 5.0 existiert eine eigens dafür vorgesehene Syntax-Erweiterung namens Annotations.
Sinn der attributorientierten Programmierung ist die automatische Erzeugung von Code und anderen in der Software-Entwicklung wichtigen Dateien für wiederkehrende Muster anhand möglichst kurzer Hinweise in dem Quelltext.
|
| |
Java wird als plattformunabhängige Programmiersprache bzw. plattformunabhängiges System genannt. Die Plattformunabhängigkeit erreicht Java durch die Definition einer eigenen Plattform, der Java Platform, die auf den gewünschten Absichtsystemen meist durch eine Java Virtual Machine simuliert wird. Streng genommen ist Java also nicht wirklich plattformunabhängig, sondern abhängig von seiner eigenen Plattform, welche auf die verschiedenen Systeme portiert wird. Zur Ausführung von Java-Programmen ist also eine Java Platform nötig. Die Java Plattform existiert für weit verbreitete Betriebssysteme wie Microsoft Windows, Linux, Solaris, Mac OS X, AIX und viele andere. Aber nicht ca. auf Server- und Desktopbetriebssystemen findet sich eine JVM. Auch auf Handies und Organizern, sogar in Fernsehern, in Automobilen und auf Smartcards ist heutzutage eine JVM anzutreffen, die Java-Programme ausführen können. Die Plattformunabhängigkeit endet jedoch für solche Systeme, für die keine Java Virtual Machine existiert, dort ist die Ausführung von Java-Programmen in der Regel darum nicht möglich. Meist handelt es sich hierbei jedoch um sehr alte oder exotische Systeme. Die Java-Plattform zur Ausführung von Java-Programmen heißt Java Runtime Environment (JRE).
Java Programme werden in dem Normalfall in einen nicht direkt ausführbaren Bytecode übersetzt, den Maschinencode der Java Platform. Es existieren auch Compiler für Java, die Java Quelltexte oder Java Byte Code in normalen Maschinencode übersetzen können, sowie CPUs, die Java Byte Code als Maschinensprache verstehen und ausführen können.
Die Programmierung in Java ermöglicht dem Programmierer weder eine direkte Hardware-Steuerung noch das direkte Aufrufen von hardwarenahen Systemfunktionen. Ein Java-Quelltext kann auf diesem Wege kaum Abhängigkeiten von einem bestimmten Betriebssystem oder einer bestimmten Hardware erlangen. Es ist jedoch möglich, plattformspezifische Teile in C oder einer anderen Sprache zu implementieren (Java Native Interface, JNI), um von dort aus Hardware oder spezielle Funktionen des Betriebssystem anzusteuern.
Buch-Tipp: Moderne C++ Programmierung. Klassen, Templates, Design Patterns (Xpert.press) Titel hält, was er verspricht Das Buch »Moderne C++ Programmierung« hat sich die fünf Sterne absolut verdient, da der Autor Ralf Schneeweiß es schafft eine Lücke in Lehrbüchern zu C++ zu füllen. Er hält sich nicht lange mit einführenden Sprachmerkmalen auf, sondern findet ziemlich direkt den Weg zur fortgeschrittenen und modernen C++ Programmierung.... |
Modulare Ausführung auf fernen Computern | |
Java bietet die Möglichkeit, Klassen zu schreiben, die in unbekannten Containern ablaufen. Beispielsweise lassen sich Applets in Web-Browsern, die Java unterstützen, ausführen. Das Sicherheitskonzept von Java kann dazu eingesetzt werden, dass unbekannte Klassen dabei keinen Schaden anrichten können, was vor allem bei Applets wichtig ist. Beispiele für Java Container-Module sind:
Buch-Tipp: PHP PEAR - Anwendung und Entwicklung - PEAR und PECL zur PHP-Programmierung nutzen Super gutes Buch mit 1A Besipielen zu PEAR Mit diesem Buch gibt es endlich richtige Erklärungen zu den verschiedenen PEAR Bibliotheken da sonstige etwas mager ausfallen.
Sehr gut gelungen sind auch die Beispiele zur jeden einzelnen Bibliothek, die ausführlich in den verschiedenen Kapiteln durchgenommen werden. Der Autor gibt sich Mühe alles... |
| |
Wichtigstes Merkmal von Java ist sein Sicherheitskonzept, das aus drei Schichten besteht:
- dem Code Verifier, der sicherstellt, dass die VM keinen ungültigen Bytecode ausführen kann.
- den Class Loadern, die die sichere Zuführung von Klasseninformationen zu dem Interpreter steuern.
- den Security Managern, die sicher stellen, dass ca. Zugriff auf Programmobjekte erlaubt wird, für die entsprechende Rechte vorhanden sind.
Der Objektzugriff in Java ist über Referenzen genannte Zeiger implementiert, aus Sicherheitsgründen ist es darum nicht möglich, mit ihnen zu rechnen oder sie sogar zu modifizieren. So genannte Pointerarithmetik ist mit der Sprache also ausgeschlossen. Per Design können so häufig auftretende Fehler während des Entwicklungsprozesses von vorneherein vermieden werden.
Um große Projekte strukturieren zu können und saubere Schnittstellen zu Bibliotheken zu schaffen, können die Klassen zu Paketen (englisch packages) zusammengefasst werden. Die Zugriffe auf Klassen und Methoden eines fremden Packages können – ähnlich wie innerhalb einer Klasse unter anderem durch private und public – geregelt werden.
Weiter unterstützt die Sprache Threads (gleichzeitig ablaufende Programmteile) und Ausnahmen (englisch exception) und Java beinhaltet auch einen Garbage-Collector, der nicht (mehr) referenzierte Objektinstanzen aus dem Speicher entfernt.
Bemerkenswert ist auch die explizite Unterscheidung von Schnittstellen und Klassen. Eine Klasse kann beliebig viele Schnittstellen implementieren, ist aber immer die Spezialisierung exakt einer Basisklasse. Alle Klassen sind – direkt oder indirekt – von der Wurzelklasse Object abgeleitet.
Zu Java gehört eine umfangreiche Klassenbibliothek. Dem Programmierer wird damit eine einheitliche, vom zugrunde liegenden Betriebssystem unabhängige, Schnittstelle (Application programming interface, API) angeboten.
Mit Java 1.1 wurden die Java Foundation Classes (JFC) eingeführt, die u. a. Swing, das zur Erzeugung plattformunabhängiger graphischer Benutzerschnittstellen (GUI) dient und auf AWT basiert, bereitstellen.
Buch-Tipp: Photoshop CS3 - Der professionelle Einstieg lockerer Stil auf hohem Niveau: der ideale Einstieg Eigentlich erwarte ich von Fachbüchern rund um Software nicht mehr viel. Profi sein heißt zumeist nicht, dieses Wissen auf professionell zu Papier bringen zu können.
Völlig überrascht hat mich jedoch das vorliegende Buch: Hier kommen Kenntnisreichtum und didaktisches Geschick auf hervorragende... |
| |
Ein Beispielprogramm, das eine Meldung auf der Konsole ausgibt:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}
Die Grammatik von Java ist in der Java Language Specification dokumentiert.
|
| |
Grunddatentypen, die auch als 'primitive' oder 'elementare' Datentypen genannt werden, sind in Java die einzigen Datenstrukturen, die keine Objekte sind. Sie sind ebenfalls plattformunabhängig (sie werden immer in dem Big Endian-Format gespeichert, wenn sie größer als 8 Bit sind). Um dennoch auch primitive Datentypen als echte Objekte behandeln zu können, existiert für jeden einzelnen eine entsprechende Wrapperklasse, deren Benutzung jedoch erheblich inperformanter ist.
| Datentyp
| Größe
| Wrapper-Klasse
| Wertebereich
| Beschreibung
|
| boolean | 1 bit | java.lang.Boolean
| true oder false
| Boolescher Wahrheitswert
|
| byte | 8 bit | java.lang.Byte | -128 bis 127
| Zweierkomplement mit Vorzeichen
|
| char | 16 bit | java.lang.Character
| 0 bis 65.535 (z. B. 'A')
| UTF-16-Zeichen ohne Vorzeichen
|
| double | 64 bit | java.lang.Double
| +/-4,9E-324 bis +/-1,7E+308 | Gleitkommazahl (IEEE 754)
|
| float | 32 bit | java.lang.Float
| +/-1,4E-45 bis +/-3,4E+38 | Gleitkommazahl (IEEE 754)
|
| int | 32 bit | java.lang.Integer
| -2.147.483.648 bis 2.157.583.647 | Zweierkomplement mit Vorzeichen
|
| long | 64 bit | java.lang.Long
| -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807
| Zweierkomplement mit Vorzeichen
|
| short | 16 bit | java.lang.Short
| -32.768 bis 32.767 | Zweierkomplement mit Vorzeichen
|
|
| |
Siehe auch Schlüsselwörter der Programmiersprache Java.
const und goto sind zwar reserviert, aber ohne Funktion, also keine Schlüsselwörter in dem eigentlichen Sinn. Sie dienen lediglich dem Compiler zur Ausgabe sinnvoller Fehlermeldungen für Umsteiger von C++ oder C.
true, false und null sind Literale, jedoch ebenfalls eigentlich keine Schlüsselwörter in dem engeren Sinn.
Mit assert werden Assertions realisiert.
private, protected und public sind Zugriffsmodifizierer (access modifier):
|
Die Klasse selbst, innere Klassen
| Klassen im selben Package
| Unterklassen
| Sonstige Klassen
|
| private
| Ja | Nein | Nein | Nein
|
| default
| Ja | Ja | Nein | Nein
|
| protected
| Ja | Ja | Ja | Nein
|
| public
| Ja | Ja | Ja | Ja
|
Private Methoden sind von der Polymorphie ausgenommen, d.h. die Definition einer Methode derselben Signatur in einer Subklasse gilt nicht als Überschreiben.
abstract, final, static sind Polymorphie-Modifizierer.
static kann vor allen Membern außer Konstruktoren stehen und bedeutet, dass der betreffende Member in dem Kontext der Klasse verwendbar ist und kein Objekt benötigt.
abstract kann vor Klassen und Methoden stehen und bedeutet, dass dem betreffenden Member Implementierung fehlt. Unterklassen sind gezwungen, sich selbst als abstrakt zu deklarieren oder die fehlende Implementierung zu liefern.
final kann vor allen Membern außer Konstruktoren stehen und bedeutet, dass der betreffende Member nicht mehr verändert werden darf. Finale Variablen sind ähnlich wie Konstanten, finale Methoden dürfen von Subklassen nicht überschrieben werden und von finalen Klassen darf man erst gar keine Subklassen bilden. Zugriffe auf finale Variablen, deren Wert dem Compiler bekannt ist, dürfen vom Compiler durch den Wert der Variable ersetzt werden. Aufrufe finaler Methoden dürfen vom Compiler durch eingebundenen Code (Inlining) ersetzt werden. Private Methoden sind automatisch final.
native kann ca. vor Methoden stehen und bedeutet, dass die Implementierung der betreffenden Methode nicht in Java, sondern einer anderen Programmiersprache geschrieben wurde, und von der Virtuellen Maschine über eine Laufzeitbibliothek gelinkt werden muss.
strictfp kennzeichnet Klassen und Methoden, deren enthaltene Fließkommaoperationen streng nach IEEE ablaufen müssen.
package deklariert die Paket-Zugehörigkeit der nicht-geschachtelten Top-Level-Klassen einer Quelltextdatei.
import importiert Symbole (ab 5.0 auch statische Member, vorher ca. Typen), so dass sie ohne voll qualifizierten Namen benutzt werden können.
boolean, char, byte, short, int, long, float, double und void sind Typen. void ist der Nichtstyp, notwendig, um Methoden ohne Rückgabewerte zu kennzeichnen. Für die primitiven Typen: siehe oben.
class, interface, enum (ab 5.0) und @interface (ab 5.0) dienen zur Deklaration eigener Typen: Klassen, Interfaces (Schnittstellen für Klassen), Enums (Aufzählungstyp für typsichere Aufzählung, engl. typesafe enumeration) und Annotations für Metadaten. enum und @interface sind mit Java 5.0 in die Sprache aufgenommen worden.
try, catch, finally, throw, throws beziehen sich auf die Ausnahmebehandlung (englisch exception handling). Mit throw wird eine Ausnahme ausgelöst. Alle eventuell ausgelösten Ausnahmen einer Methode, die nicht von RuntimeException oder Error abstammen, müssen mit throws in der Deklaration der Methode (Signatur) angegeben werden. Es handelt sich also um so genannte checked exceptions. Mit try umschließt man einen Block, im eventuell eine Ausnahme auftreten könnte. Mit catch fängt man nach einem try-Block die dort aufgetretene Ausnahme ab, mit finally hängt man an einen try- oder catch-Block einen Block für Aufräumarbeiten an (z. B. Schließen von Dateien).
extends und implements dienen der Vererbung: extends der genetischen Erweiterungsvererbung von Klasse zu Klasse oder Interface zu Interface und implements der Implementierungsvererbung von Interface zu Klasse. Außerdem wird extends bei Generics für Typerweiterung benutzt.
super und this beziehen sich in dem Objekt-Kontext auf das aktuelle Objekt in seinem tatsächlichen Morph (this) bzw. in dem Morph der Superklasse (super). this wird benutzt, um in Konstruktoren überladene Konstruktoren aufzurufen und um bei Membernamenskonflikten explizit auf die von weiter innen liegenden Membern verdeckten Member zu verweisen. super wird in Konstruktoren zu dem Aufruf des Superklassenkonstruktors und in überschreibenden Methoden zu dem Aufruf der überschriebenen Methode benutzt. Außerdem wird super bei Generics für Typeingrenzung benutzt.
new reserviert Speicher für neue Objekte (inklusive Arrays) auf dem Heap.
if, else, switch, case, default, while, do, for, break, continue dienen der Bedingungsprüfung und Schleifensteuerung und bedienen sich einer imperativen Syntax.
return liefert Werte aus einer Methode an die aufrufende Methode zurück.
volatile ist ein Modifizierer für nicht-lokale Variablen und verbietet dem JIT-Compiler Registeroptimierungen auf diese Variable, weil mehrere Threads sie gleichzeitig benutzen könnten (insbesondere in dem Kontext nativer Methoden).
synchronized benutzt ein Objekt als Semaphor mit Lock-Pool und sorgt so dafür, dass jeglicher mit synchronized an denselben Semaphor gebundener Code ca. ein einziges Mal gleichzeitig ausgeführt werden kann. Alle anderen Threads, die solche Code-Blöcke ausführen möchten, werden solange blockiert, bis der Semaphor wieder frei ist. Des weiteren dient es auch der Synchronisation eventuell vorhandener lokaler Caches bei Multiprozessormaschinen.
transient kennzeichnet nicht-persistente Variablen, die nicht serialisiert werden dürfen.
instanceof ist ein Java-Operator, der prüft, ob ein Objekt Instanz eines Typs oder Subtyps ist.
|
Abgrenzung zu anderen Sprachen | |
|
| |
Java ist nicht mit der Programmiersprache JavaScript zu verwechseln, die ebenfalls in Web-Browsern benutzt wird.
Sie hat eine ähnliche Syntax, kennt aber keine Vererbung.
Objekte werden in JavaScript prototypenbasiert definiert.
JavaScript ist, wie der Name sagt, eine reine Skriptsprache.
Es existieren Implementationen vor allem in Web-Browsern, aber auch alleinstehende Ausführungsumgebungen sind vorhanden.
|
| |
Im Gegensatz zu C++ fanden komplexe Konstrukte, wie Mehrfachvererbung oder die fehleranfällige Zeigerarithmetik keinen Einzug. Auch um die Speicherverwaltung braucht man sich als Java-Entwickler in der Regel keine Gedanken zu machen, dies erledigt der so genannte Garbage-Collector. Spätestens beim Einsatz von Java in Embedded Systems, z. B. über OSGi muss allerdings auch hier der Programmierer sich entsprechende Gedanken machen.
|
| |
C# (gesprochen: ßie-scharp oder auch ziss) kann als Kampfansage von Microsoft an Sun Microsystems zu Java gesehen werden. Mit der Spezifikation von C#, in dem Rahmen seiner .NET (gesprochen: dott-nett) Strategie, hat Microsoft versucht, den Spagat zu schaffen zwischen dem kompletten Neuanfang einer Sprache und der leichten Integration bisher bestehender Komponenten.
Die Syntax von C# entspricht in großen Teilen der Syntax von Java, konzeptionelle Unterschiede bestehen insbesondere in der Unterstützung von Delegierten (engl. delegates), ein Konzept, das am ehesten mit Funktionszeigern vergleichbar ist (so genannte Callbacks), hierbei kommt ein Beobachter-Entwurfsmuster zu dem Einsatz – Objekte können sich für Ereignisse registrieren bzw. diese delegieren.
C# kennt ebenso wie Java eine Unterscheidung zwischen Werttypen (engl. value types; z. B. int, struct) und Referenztypen (engl. reference types, z. B. class), allerdings sind auch die elementaren Datentypen objektbasiert. Des weiteren unterstützt C# so genannte Attribute (attributes), die es erlauben, die Funktionalität der Sprache über Metadaten in dem Code zu erweitern (eine ähnliche Funktionalität gibt es seit Java 5.0). Um an C# möglichst viele Programmierer zu binden, enthält die Sprache auch Bestandteile der Sprachen VisualBasic (z. B. Merkmale bzw. properties) sowie C++ (z. B. enums).
Um auch systemnahe Programmierung zu ermöglichen, besteht in .NET die Möglichkeit, auch so genannten unsicheren unmanaged code zu benutzen. Somit können API-Aufrufe des Systems ausgeführt werden, aber der Programmierer ist für die Ressourcenverwaltung verantwortlich.
Außerdem wird hierdurch die theoretische Plattformunabhängigkeit eingeschränkt bzw. unmöglich. Bislang werden außer Microsoft eigenen Betriebssystemen (ab Windows NT 4 SP 6) von Microsoft offiziell keine weiteren Betriebssysteme unterstützt.
Die Projekte Mono (von Ximian-Technik-Guru Miguel de Icaza) und DotGNU versuchen seit längerem weitere Plattformen zu erreichen, wobei das Mono-Projekt mittlerweile in den wichtigsten Teilbereichen eine Unterstützung bietet (z. B. ASP.NET und die BCL).
|
| |
Java stellt eine Reihe von Programmierschnittstellen (APIs) zur Realiesierung von Softwareprojekten bereit.
|
|
- Security
- Java Crytography Extension (JCE)
- Java Authentication and Authorization Service (JAAS)
- Java Secure Socket Extension (JSSE)
- Database Technology
- Debugging Technology
- Java Platform Debugger Architecture (JPDA)
- Documentation Technology
- Other Core J2SE Technologies
- Java Optional Packages and Related Technology
- Java Management Extensions (JMX)
- JMX Remote
- Java Communications
- Java Telephony
|
|
- Deployment Technologies
- Component Model Technologies
- GUI Toolkit
- Java Foundation Classes (JFC/Swing)
- Sound
- Java Optional Packages and Related Technology
Java Shared Data Toolkit (JSDT)
|
| |
Es gibt eine große Vielfalt von Entwicklungsumgebungen für Java, sowohl kommerzielle als auch freie (Open Source). Die meisten Entwicklungsumgebungen für Java sind selbst ebenfalls in Java geschrieben.
In Form von z. B. OSGi finden sich inzwischen auch eigenständige Entwicklungsframeworks, die verschiedene Konzepte von Java unabhängig hiervon weiterentwickeln - Eclipse basiert beispielsweise auf OSGi.
Die bekanntesten Open-Source-Umgebungen sind Eclipse, jEdit und NetBeans.
Unter den kommerziellen Entwicklungsumgebungen sind das auf Netbeans basierende Sun ONE Studio (http://wwws.sun.com/software/sundev/jde/) von Sun, IntelliJ IDEA (http://www.jetbrains.com/idea/) von JetBrains (http://www.jetbrains.com/index.html) und JBuilder von Borland am verbreitetsten, sowie JCreator (http://www.jcreator.com/). Außerdem gibt es noch eine, um einige hundert Plugins erweiterte, Version von Eclipse, die von IBM unter dem Namen WebSphere Studio Application Developer (http://www-306.ibm.com/software/awdtools/studioappdev/) ("WSAD") vertrieben wird.
Wer lieber einen Texteditor benutzt findet in Emacs zusammen mit der JDEE (http://jdee.sunsite.dk/) (Java Development Environment for Emacs) ein mächtiges Werkzeug. Für andere Editoren wie Vim oder Jed (http://www.jedsoft.org/jed/) gibt es ebenfalls entsprechende Modes.
Siehe auch: Cocoon, Jogl
|
Weiteres zu dem Artikel Java (Programmiersprache) |
| Andere Leser interessierten sich auch für folgende Beschreibungen: | Bezug, Deklaration, Download, Edition, Einsatz, George, Integration, Interpreter, Iteration, Konzept, Namen, Objekt, Online, Rahmen, Symbole, Synchronisation, Texteditor, Ursprung, Zeiger | | Schnellzugrif auf verwandte Texte: | | | NEU! Frage im Forum zum Thema: | | Wenn die Beschreibung 'Java (Programmiersprache)' Ihrer Meinung nach nicht korrekt ist oder in aktueller Version Fehler enthalten sind oder es fehlt die Java (Programmiersprache) Definition, dann klicken Sie bitte auf "Beschreibung bearbeiten" und schreiben Sie die Eigene Version des Textes. Die Änderungen in der Beschreibung werden sofort aktiv und für alle sichtbar. Ein Administrator wird Ihre Version der Beschreibung und Definition von 'Java (Programmiersprache)' nachher prüfen. Bitte achten Sie auf die Urheberrechte (Copyright). Wir sind für die besseren Beschreibung von 'Java (Programmiersprache)' und 'Java (Programmiersprache)' Definition sehr dankbar.
Alle Tipps zu den Bücher auf dieser Seite wurden automatisch generiert. D.h. die Bücher wurden aus einer Datenbank von dem Computer ausgesucht. Deshalb kann es vorkommen, dass vorgeschlagene Bücher nicht ganz der 'Java (Programmiersprache)' Beschreibung entsprechen.
|
|
· Diese Seite wurde bisher 4.270 mal abgerufen. · Letzte Counteraktualisierung erfolgte am 17.05.2008 um 13:20:48 · Diese Seite wurde zuletzt geändert um 14:47, 2. Okt 2004. · Letzte Portalaktualisierung erfolgte um 08:00:00 GMT, 25.02.2008
|